"""
1、北京高校排名，按“社会影响”、“升序”排序显示所有数据(文件名：高校排名a.py)
地址：http://www.gaosan.com/gaokao/43980.html
"""
# -*- coding:utf8 -*-

import urllib.request

import bs4.element
from bs4 import BeautifulSoup

# 链接地址解析-------------------------------------------------------------------------
url = "http://www.gaosan.com/gaokao/43980.html"

HttpResponseObject = urllib.request.urlopen(url)

strHtml = HttpResponseObject.read()
# 构建beautifulsoup实例
soup = BeautifulSoup(strHtml.decode('utf-8'), "lxml")
# 第一个参数是要匹配的内容
# 第二个参数是beautifulsoup要采用的模块，即规则

# 以上都是固定套路

# 找到第一层标签------------------------<table width="580px" align="center">------------------------------------------------
data = soup.find_all("table", {"width": "580px", "align": "center"})
# find_all返回满足条件的【所有】结果
# find返回满足条件的【第1个】结果
# 这样把整个表都提取了，而这个表只有一份，故len(data) == 1
# 换一种方式，我们一行一行大学排名信息的提取
content = []
for tr in soup.find('tbody').children:
    if isinstance(tr, bs4.element.Tag):
        lines = []
        i = 0
        for td in tr:
            if i == 0:  # 去掉原来的名次，方便我们排序
                i = 1
                continue
            lines.append((td.string).strip())
        content.append(lines)
title = content[0]
content = content[1:]

# 排序  社会影响”、“升序
content_sort = sorted(content, key=lambda x: float(x[6]))  # 注意+ (float) 100是整数，跟float排序有异常

# 打印
for i in title:
    # print('{0:chr(12288) <15}'.format(i), end='')  # 沒能成功识别中文空格 chr(12288)
    print(i.ljust(10,chr(12288)),end='')
print('\n')
"""
for line in content_sort:
    for i in line:
        print(i.ljust(10,chr(12288)),end='')
    print('\n')
"""
# 再调整调整对齐格式!
for line in content_sort:
    for i in range(len(line)):
        if i<3:
            print(line[i].ljust(10,chr(12288)),end='')
        else:
            print(line[i].ljust(16),end='')
    print('\n')